package com.candy.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

/**
 * @author donglin
 * @Title:
 * @类名: CorsConfig
 * @date 2020/9/30
 */
@Configuration
public class CorsConfig {
//  进行跨域配置，注意版本不同，配置有部分区别
//  springboot 2.0.0版本进行跨域配置时，调用的方法为addAllowedOrigin
//    升级为2.4.0 版本后，配置跨域时，调用的方法为addAllowedOriginPattern
//    使用 @CrossOrigin注解也可以实现跨域，但若全局需要，此方式进行跨域处理较麻烦，此时可以考虑全局配置的方式进行处理
    private CorsConfiguration buildConfig() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        // 1 设置访问源地址
        corsConfiguration.addAllowedOriginPattern("*");
        // 2 设置访问源请求头
        corsConfiguration.addAllowedHeader("*");
        //3 设置访问源请求方法
        corsConfiguration.addAllowedMethod("*");
        //4 是否允许用户发送、处理 cookie
        corsConfiguration.setAllowCredentials(true);
        return corsConfiguration;
    }
    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        //5 对接口配置跨域设置
        source.registerCorsConfiguration("/**", buildConfig());
        return new CorsFilter(source);
    }
}

